// Generated from Fun.g4 by ANTLR 4.0

package grammar;

import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.RuleContext;
import org.antlr.v4.runtime.atn.ATN;
import org.antlr.v4.runtime.atn.ATNSimulator;
import org.antlr.v4.runtime.atn.LexerATNSimulator;
import org.antlr.v4.runtime.atn.PredictionContextCache;
import org.antlr.v4.runtime.dfa.DFA;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class FunLexer extends Lexer {
    protected static final DFA[] _decisionToDFA;
    protected static final PredictionContextCache _sharedContextCache =
            new PredictionContextCache();
    public static final int
            T__14 = 1, T__13 = 2, T__12 = 3, T__11 = 4, T__10 = 5, T__9 = 6, T__8 = 7, T__7 = 8, T__6 = 9,
            T__5 = 10, T__4 = 11, T__3 = 12, T__2 = 13, T__1 = 14, T__0 = 15, PATH = 16, SIGNATURE = 17,
            LINE_COMMENT = 18, COMMENT = 19, AND = 20, OR = 21, EQUAL = 22, NOT_EQUAL = 23, LESS_OR_EQUAL = 24,
            MORE_OR_EQUAL = 25, LESS = 26, MORE = 27, PLUS = 28, MINUS = 29, MULT = 30, DIV = 31,
            MOD = 32, LITERAL = 33, IDENTIFIER = 34, WS = 35;
    public static String[] modeNames = {
            "DEFAULT_MODE"
    };

    public static final String[] tokenNames = {
            "<INVALID>",
            "'->'", "'()'", "'in'", "'.'", "')'", "':'", "'('", "'if'", "'fi'", "'='",
            "'\\'", "'let'", "'then'", "'new'", "'else'", "PATH", "SIGNATURE", "LINE_COMMENT",
            "COMMENT", "'&&'", "'||'", "'=='", "'!='", "'<='", "'=>'", "'<'", "'>'",
            "'+'", "'-'", "'*'", "'/'", "'%'", "LITERAL", "IDENTIFIER", "WS"
    };
    public static final String[] ruleNames = {
            "T__14", "T__13", "T__12", "T__11", "T__10", "T__9", "T__8", "T__7", "T__6",
            "T__5", "T__4", "T__3", "T__2", "T__1", "T__0", "PATH", "SIGNATURE", "LINE_COMMENT",
            "COMMENT", "AND", "OR", "EQUAL", "NOT_EQUAL", "LESS_OR_EQUAL", "MORE_OR_EQUAL",
            "LESS", "MORE", "PLUS", "MINUS", "MULT", "DIV", "MOD", "LITERAL", "IDENTIFIER",
            "WS"
    };


    public FunLexer(CharStream input) {
        super(input);
        _interp = new LexerATNSimulator(this, _ATN, _decisionToDFA, _sharedContextCache);
    }

    @Override
    public String getGrammarFileName() {
        return "Fun.g4";
    }

    @Override
    public String[] getTokenNames() {
        return tokenNames;
    }

    @Override
    public String[] getRuleNames() {
        return ruleNames;
    }

    @Override
    public String[] getModeNames() {
        return modeNames;
    }

    @Override
    public ATN getATN() {
        return _ATN;
    }

    @Override
    public void action(RuleContext _localctx, int ruleIndex, int actionIndex) {
        switch (ruleIndex) {
            case 17:
                LINE_COMMENT_action((RuleContext) _localctx, actionIndex);
                break;

            case 18:
                COMMENT_action((RuleContext) _localctx, actionIndex);
                break;

            case 34:
                WS_action((RuleContext) _localctx, actionIndex);
                break;
        }
    }

    private void WS_action(RuleContext _localctx, int actionIndex) {
        switch (actionIndex) {
            case 2:
                skip();
                break;
        }
    }

    private void COMMENT_action(RuleContext _localctx, int actionIndex) {
        switch (actionIndex) {
            case 1:
                skip();
                break;
        }
    }

    private void LINE_COMMENT_action(RuleContext _localctx, int actionIndex) {
        switch (actionIndex) {
            case 0:
                skip();
                break;
        }
    }

    public static final String _serializedATN =
            "\2\4%\u00d7\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t" +
                    "\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20" +
                    "\t\20\4\21\t\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27" +
                    "\t\27\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36" +
                    "\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\3\2\3\2\3\2\3\3\3\3\3" +
                    "\3\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\t\3\n\3\n\3\n" +
                    "\3\13\3\13\3\f\3\f\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\17\3\17" +
                    "\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\21\3\21\6\21y\n\21\r\21\16\21z\3" +
                    "\22\3\22\7\22\177\n\22\f\22\16\22\u0082\13\22\3\22\3\22\3\22\3\23\3\23" +
                    "\3\23\3\23\7\23\u008b\n\23\f\23\16\23\u008e\13\23\3\23\5\23\u0091\n\23" +
                    "\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\7\24\u009b\n\24\f\24\16\24\u009e" +
                    "\13\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\26\3\26\3\26\3\27\3\27" +
                    "\3\27\3\30\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\34\3\34" +
                    "\3\35\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\"\6\"\u00c6\n\"\r\"\16\"" +
                    "\u00c7\3#\3#\7#\u00cc\n#\f#\16#\u00cf\13#\3$\6$\u00d2\n$\r$\16$\u00d3" +
                    "\3$\3$\4\u008c\u009c%\3\3\1\5\4\1\7\5\1\t\6\1\13\7\1\r\b\1\17\t\1\21\n" +
                    "\1\23\13\1\25\f\1\27\r\1\31\16\1\33\17\1\35\20\1\37\21\1!\22\1#\23\1%" +
                    "\24\2\'\25\3)\26\1+\27\1-\30\1/\31\1\61\32\1\63\33\1\65\34\1\67\35\19" +
                    "\36\1;\37\1= \1?!\1A\"\1C#\1E$\1G%\4\3\2\7\b\61;==C\\^^aac|\3\62;\4C\\" +
                    "c|\6\62;C\\aac|\5\13\f\17\17\"\"\u00de\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2" +
                    "\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2" +
                    "\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3" +
                    "\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3" +
                    "\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65" +
                    "\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3" +
                    "\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\3I\3\2\2\2\5L\3\2\2\2\7O\3\2\2" +
                    "\2\tR\3\2\2\2\13T\3\2\2\2\rV\3\2\2\2\17X\3\2\2\2\21Z\3\2\2\2\23]\3\2\2" +
                    "\2\25`\3\2\2\2\27b\3\2\2\2\31d\3\2\2\2\33h\3\2\2\2\35m\3\2\2\2\37q\3\2" +
                    "\2\2!v\3\2\2\2#|\3\2\2\2%\u0086\3\2\2\2\'\u0096\3\2\2\2)\u00a4\3\2\2\2" +
                    "+\u00a7\3\2\2\2-\u00aa\3\2\2\2/\u00ad\3\2\2\2\61\u00b0\3\2\2\2\63\u00b3" +
                    "\3\2\2\2\65\u00b6\3\2\2\2\67\u00b8\3\2\2\29\u00ba\3\2\2\2;\u00bc\3\2\2" +
                    "\2=\u00be\3\2\2\2?\u00c0\3\2\2\2A\u00c2\3\2\2\2C\u00c5\3\2\2\2E\u00c9" +
                    "\3\2\2\2G\u00d1\3\2\2\2IJ\7/\2\2JK\7@\2\2K\4\3\2\2\2LM\7*\2\2MN\7+\2\2" +
                    "N\6\3\2\2\2OP\7k\2\2PQ\7p\2\2Q\b\3\2\2\2RS\7\60\2\2S\n\3\2\2\2TU\7+\2" +
                    "\2U\f\3\2\2\2VW\7<\2\2W\16\3\2\2\2XY\7*\2\2Y\20\3\2\2\2Z[\7k\2\2[\\\7" +
                    "h\2\2\\\22\3\2\2\2]^\7h\2\2^_\7k\2\2_\24\3\2\2\2`a\7?\2\2a\26\3\2\2\2" +
                    "bc\7^\2\2c\30\3\2\2\2de\7n\2\2ef\7g\2\2fg\7v\2\2g\32\3\2\2\2hi\7v\2\2" +
                    "ij\7j\2\2jk\7g\2\2kl\7p\2\2l\34\3\2\2\2mn\7p\2\2no\7g\2\2op\7y\2\2p\36" +
                    "\3\2\2\2qr\7g\2\2rs\7n\2\2st\7u\2\2tu\7g\2\2u \3\2\2\2vx\7B\2\2wy\t\2" +
                    "\2\2xw\3\2\2\2yz\3\2\2\2zx\3\2\2\2z{\3\2\2\2{\"\3\2\2\2|\u0080\7*\2\2" +
                    "}\177\5!\21\2~}\3\2\2\2\177\u0082\3\2\2\2\u0080~\3\2\2\2\u0080\u0081\3" +
                    "\2\2\2\u0081\u0083\3\2\2\2\u0082\u0080\3\2\2\2\u0083\u0084\7+\2\2\u0084" +
                    "\u0085\5!\21\2\u0085$\3\2\2\2\u0086\u0087\7\61\2\2\u0087\u0088\7\61\2" +
                    "\2\u0088\u008c\3\2\2\2\u0089\u008b\13\2\2\2\u008a\u0089\3\2\2\2\u008b" +
                    "\u008e\3\2\2\2\u008c\u008d\3\2\2\2\u008c\u008a\3\2\2\2\u008d\u0090\3\2" +
                    "\2\2\u008e\u008c\3\2\2\2\u008f\u0091\7\17\2\2\u0090\u008f\3\2\2\2\u0090" +
                    "\u0091\3\2\2\2\u0091\u0092\3\2\2\2\u0092\u0093\7\f\2\2\u0093\u0094\3\2" +
                    "\2\2\u0094\u0095\b\23\2\2\u0095&\3\2\2\2\u0096\u0097\7\61\2\2\u0097\u0098" +
                    "\7,\2\2\u0098\u009c\3\2\2\2\u0099\u009b\13\2\2\2\u009a\u0099\3\2\2\2\u009b" +
                    "\u009e\3\2\2\2\u009c\u009d\3\2\2\2\u009c\u009a\3\2\2\2\u009d\u009f\3\2" +
                    "\2\2\u009e\u009c\3\2\2\2\u009f\u00a0\7,\2\2\u00a0\u00a1\7\61\2\2\u00a1" +
                    "\u00a2\3\2\2\2\u00a2\u00a3\b\24\3\2\u00a3(\3\2\2\2\u00a4\u00a5\7(\2\2" +
                    "\u00a5\u00a6\7(\2\2\u00a6*\3\2\2\2\u00a7\u00a8\7~\2\2\u00a8\u00a9\7~\2" +
                    "\2\u00a9,\3\2\2\2\u00aa\u00ab\7?\2\2\u00ab\u00ac\7?\2\2\u00ac.\3\2\2\2" +
                    "\u00ad\u00ae\7#\2\2\u00ae\u00af\7?\2\2\u00af\60\3\2\2\2\u00b0\u00b1\7" +
                    ">\2\2\u00b1\u00b2\7?\2\2\u00b2\62\3\2\2\2\u00b3\u00b4\7?\2\2\u00b4\u00b5" +
                    "\7@\2\2\u00b5\64\3\2\2\2\u00b6\u00b7\7>\2\2\u00b7\66\3\2\2\2\u00b8\u00b9" +
                    "\7@\2\2\u00b98\3\2\2\2\u00ba\u00bb\7-\2\2\u00bb:\3\2\2\2\u00bc\u00bd\7" +
                    "/\2\2\u00bd<\3\2\2\2\u00be\u00bf\7,\2\2\u00bf>\3\2\2\2\u00c0\u00c1\7\61" +
                    "\2\2\u00c1@\3\2\2\2\u00c2\u00c3\7\'\2\2\u00c3B\3\2\2\2\u00c4\u00c6\t\3" +
                    "\2\2\u00c5\u00c4\3\2\2\2\u00c6\u00c7\3\2\2\2\u00c7\u00c5\3\2\2\2\u00c7" +
                    "\u00c8\3\2\2\2\u00c8D\3\2\2\2\u00c9\u00cd\t\4\2\2\u00ca\u00cc\t\5\2\2" +
                    "\u00cb\u00ca\3\2\2\2\u00cc\u00cf\3\2\2\2\u00cd\u00cb\3\2\2\2\u00cd\u00ce" +
                    "\3\2\2\2\u00ceF\3\2\2\2\u00cf\u00cd\3\2\2\2\u00d0\u00d2\t\6\2\2\u00d1" +
                    "\u00d0\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3\u00d1\3\2\2\2\u00d3\u00d4\3\2" +
                    "\2\2\u00d4\u00d5\3\2\2\2\u00d5\u00d6\b$\4\2\u00d6H\3\2\2\2\13\2z\u0080" +
                    "\u008c\u0090\u009c\u00c7\u00cd\u00d3";
    public static final ATN _ATN =
            ATNSimulator.deserialize(_serializedATN.toCharArray());

    static {
        _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
    }
}